Business Intelligence (BI) generally refers to software tools used to improve decision-making. These tools are commonly applied to financial, human resource, marketing, sales, customer and supplier analyses. More specifically, these tools can include: reporting and analysis tools to present information, content delivery infrastructure systems for delivery and management of reports and analytics, data warehousing systems for cleansing and consolidating information from disparate sources, and data management systems to collect, store, and manage raw data.
BI tools with modular architectures are common. The executable files built on modular designs scale in size as features are added. Also, in a modular BI tool, features may be added while the general interface is preserved. Because each feature is ideally independent of the other features, the addition of multiple features to a BI tool may lead to redundant code in the tool. If left unchecked, this can lead to unwieldy executable files that defeat an advantage of modular design.
Redundant code can be eliminated through componentization. Componentization is an approach in the field of software engineering which considers how executable instructions within programs are divided up and arranged. Componentized code was developed out of the desire to create portions of code that are reusable, interchangeable, better tested and the like. A set of executable instructions can be split-up into components. A component can be an object, a group of objects, one or more subsystems, a library and the like.
An optimal componentized system reduces the amount of redundant code. A challenge associated with reducing the amount of redundant code is to account for the presence or absence of a component.
In view of the above, it is desirable to provide improved techniques for determining how portions of executable instructions are divided and arranged. It would also be desirable to enhance software frameworks with improved techniques to handle componentized software.